package com.bee.bootstrap.user.entity;

import java.util.Arrays;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.bee.bootstrap.role.entity.Role;
import com.bee.common.core.enums.StatusEnum;
import com.bee.common.core.jsonview.JsonViews;
import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 
 * </p>
 *
 * @author liekkas
 * @since 2018-04-09
 */
@TableName("base_user")
@Data
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
	@TableId(value="id", type= IdType.ID_WORKER)
	private Long id;
    /**
     * 用户名
     */
	@TableField("user_name")
	private String userName;
    /**
     * 用户密码
     */

	@TableField("pass_word")
	@JsonView(JsonViews.Private.class) //私有字段
	private String passWord;
    /**
     * 手机号码
     */
	@TableField("account_phone")
	private String accountPhone;
    /**
     * 姓名
     */
	@ApiModelProperty(value="姓名",name="name")
	private String name;
	/**
	 * 用户所在省份
	 */
	private String province;
    /**
     * 用户所在省份编码
     */
	@ApiModelProperty(value="省份编码",name="provinceCode")
	@TableField("province_code")
	private String provinceCode;
	/**
	 * 用户所在城市
	 */
	private String city;
    /**
     * 用户所在城市编码
     */
	@ApiModelProperty(value="城市编码",name="cityCode")
	@TableField("city_code")
	private String cityCode;
	/**
	 * 用户所在区域
	 */
	private String district;
    /**
     * 用户所在区域编码
     */
	@ApiModelProperty(value="区域编码",name="districtCode")
	@TableField("district_code")
	private String districtCode;
    /**
     * 授权凭证
     */
    @JsonView(JsonViews.Private.class) //私有字段
	@TableField("token")
	private String token;
    /**
     * 创建时间
     */
	@TableField("create_time")
	private Date createTime;
    /**
     * 有效时间
     */
	@TableField("update_time")
	private Date updateTime;
	/**
	 * 盐
	 */
	@TableField("salt")
	@JsonView(JsonViews.Private.class) //私有字段
	private String salt;
    /**
     * 状态
     */
	private String status;

	//视图数据
	@JsonView(JsonViews.Private.class)
	private transient List<Role> roles;

	private transient Set<String> userRoles;

	private transient String areaView;

	private transient List<StatusEnum> statusEnums= Arrays.asList(StatusEnum.NORMAL,StatusEnum.INVALID);

	//查询条件
	private transient String nameQuery;





	@Override
	protected Serializable pkVal() {
		return this.id;
	}

}
